﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanCafe.QuanCafe_BUS_WebService;
using System.Threading;

namespace QuanCafe
{
    public partial class frmNhomThucUong : Form
    {
        // tạo 1 biến service
        private QuanCafe_BUS_WebServiceSoapClient ws = new QuanCafe_BUS_WebServiceSoapClient();

        // tạo 1 biến lưu giá trị dòng hiện tại trong gridview
        private int _donghientai = 0;

        #region Khởi tạo các delegate

        #endregion


        #region Các xử lý ban đầu

        public frmNhomThucUong()
        {
            InitializeComponent();
            // sử dụng lớp DataGridViewColumnSelector
            DataGridViewColumnSelector cs = new DataGridViewColumnSelector(dgvDanhSachNhomThucUong);
            cs.MaxHeight = 200;
            cs.Width = 200;
        }

        private void ttpInfo_Draw(object sender, DrawToolTipEventArgs e)
        {
            e.DrawBackground();
            e.DrawText();
        }

        private void frmNhomThucUong_Load(object sender, EventArgs e)
        {
            dgvDanhSachNhomThucUong.DataSource = ws.NTU_LayDanhSachNhomThucUong();
            ptbAnhDaiDien.ImageLocation = dgvDanhSachNhomThucUong.Rows[0].Cells[1].Value.ToString();
            bindding();
            cbbSearch.SelectedIndex = 0;
        }

        private void ptbAnhDaiDien_LoadProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            probAnhDaiDien.Visible = true;
        }

        private void ptbAnhDaiDien_LoadCompleted(object sender, AsyncCompletedEventArgs e)
        {
            probAnhDaiDien.Visible = false;
        }



        #endregion


        #region Các xử lý chính

        // viết hàm binding
        private void bindding()
        {
            txtMaNhom.DataBindings.Clear();
            txtMaNhom.DataBindings.Add("Text", dgvDanhSachNhomThucUong.DataSource, "MaNhom");
            txtTenNhom.DataBindings.Clear();
            txtTenNhom.DataBindings.Add("Text", dgvDanhSachNhomThucUong.DataSource, "TenNhom");
        }

        // xử lý tại 1 vị trí đang được chọn
        private void dgvDanhSachNhomThucUong_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (dgvDanhSachNhomThucUong.CurrentRow != null)
                {
                    if (dgvDanhSachNhomThucUong.CurrentRow.Index != _donghientai)
                    {
                        _donghientai = dgvDanhSachNhomThucUong.CurrentRow.Index;
                        ptbAnhDaiDien.ImageLocation = dgvDanhSachNhomThucUong.CurrentRow.Cells[1].Value.ToString();
                    }
                }
                else
                {

                }
            }
            catch
            {
                // xuất ra thông báo
                MessageBox.Show("Thức uống này chưa được cập nhật hình ảnh!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        // xem 
        private void btnXemNhomThucUong_Click(object sender, EventArgs e)
        {
            dgvDanhSachNhomThucUong.DataSource = ws.NTU_LayDanhSachNhomThucUong();
            ptbAnhDaiDien.ImageLocation = dgvDanhSachNhomThucUong.Rows[0].Cells[1].Value.ToString();
            bindding();
            cbbSearch.SelectedIndex = 0;
        }


        // thêm nhóm -> gọi FormThemNhom
        private void btnThemNhomThucUong_Click(object sender, EventArgs e)
        {
            Thread newThread = new Thread(new ThreadStart(ShowFormThemNhom));
            newThread.SetApartmentState(ApartmentState.STA);
            newThread.Start();
        }

        // cập nhật nhóm -> gọi formCapNhat
        private void btnCapNhatNhomThucUong_Click(object sender, EventArgs e)
        {
            Thread newThread = new Thread(new ThreadStart(ShowFormCapNhatNhom));
            newThread.SetApartmentState(ApartmentState.STA);
            newThread.Start();
        }

        // xóa nhóm
        private void btnXoaNhomThucUong_Click(object sender, EventArgs e)
        {
            try
            {
                // hỏi xem có muốn xóa ko
                DialogResult kq = MessageBox.Show("Khi bạn thực hiện thao tác này, toàn bộ thức uống thuộc nhóm sẽ bị xóa! \n Bạn có muốn tiếp tục?","Informaton",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
                if (kq == DialogResult.OK) // đồng ý
                {
                    bool flag = false;
                    // đầu tiên, xóa toàn bộ thức uống thuộc nhóm này
                    // gọi hàm xóa toàn bộ thức uống
                    flag = ws.TU_XoaThucUongCuaNhom(dgvDanhSachNhomThucUong.CurrentRow.Cells[2].Value.ToString());
                    // sau đó, xóa nhóm
                    flag = ws.NTU_XoaNhomThucUong(dgvDanhSachNhomThucUong.CurrentRow.Cells[2].Value.ToString());
                    if (flag == false)
                    {
                        // xuất ra thông báo
                        MessageBox.Show("Thao tác xóa thất bại!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    else
                    { 
                        
                        // xuất ra thông báo
                        MessageBox.Show("Xóa nhóm thức uống thành công!", "Information!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        dgvDanhSachNhomThucUong.DataSource = ws.NTU_LayDanhSachNhomThucUong();
                        ptbAnhDaiDien.ImageLocation = dgvDanhSachNhomThucUong.Rows[0].Cells[1].Value.ToString();
                        bindding();
                        cbbSearch.SelectedIndex = 0;
                        return;
                    }
                    
                }
            }
            catch (Exception x)
            {
                MessageBox.Show("Xảy ra lỗi: " + x);
            }
        }



        #endregion



        #region Xứ lý với thread

        // viết hàm gọi form ThemNhom
        public void ShowFormThemNhom()
        {
            frmNTU_ThemNhom _frmThemNhom = new frmNTU_ThemNhom(dgvDanhSachNhomThucUong.CurrentRow.Cells[1].Value.ToString(), dgvDanhSachNhomThucUong.CurrentRow.Cells[2].Value.ToString(), dgvDanhSachNhomThucUong.CurrentRow.Cells[3].Value.ToString(), dgvDanhSachNhomThucUong.CurrentRow.Cells[4].Value.ToString());
            Application.Run(_frmThemNhom);
        }

        // viết hàm gọi form CapNhatNhom
        public void ShowFormCapNhatNhom()
        {
            frmNTU_CapNhatNhom _frmCapNhatNhom = new frmNTU_CapNhatNhom(dgvDanhSachNhomThucUong.CurrentRow.Cells[1].Value.ToString(), dgvDanhSachNhomThucUong.CurrentRow.Cells[2].Value.ToString(), dgvDanhSachNhomThucUong.CurrentRow.Cells[3].Value.ToString(), dgvDanhSachNhomThucUong.CurrentRow.Cells[4].Value.ToString());
            Application.Run(_frmCapNhatNhom);
        }
        #endregion


       


        #region Search dữ liệu

        // viết hàm search dữ liệu
        private void btnSearch_Click(object sender, EventArgs e)
        {
            try
            {
                if (txtTuKhoa.Text.Length != 0)
                {
                    // kiểm tra xem muốn tra theo gì
                    if (cbbSearch.SelectedIndex == 0) // theo mã
                    {
                        dgvDanhSachNhomThucUong.DataSource = ws.NTU_TraCuuTheoMaNhom(txtTuKhoa.Text);
                        ptbAnhDaiDien.ImageLocation = dgvDanhSachNhomThucUong.Rows[0].Cells[1].Value.ToString();
                        bindding();
                    }
                    else
                    {

                        dgvDanhSachNhomThucUong.DataSource = ws.NTU_TraCuuTheoTenNhom(txtTuKhoa.Text);
                        ptbAnhDaiDien.ImageLocation = dgvDanhSachNhomThucUong.Rows[0].Cells[1].Value.ToString();
                        bindding();
                    }
                }
            }
            catch
            {

            }
        }

        private void txtTuKhoa_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                btnSearch_Click(sender, e);
            }
        }


        #endregion

        
       
    }
}
